Wprowadzenie

Na zmiennych i stałych (lub bezpośrednio na wartościach) możemy wykonywać różne operacje matematyczne i logiczne.

Operatory arytmetyczne

Operator Opis
a = b + c; dodawanie
a = b – c; odejmowanie
a = b * c; mnożenie
a = b / c; dzielenie
a = 10 % 4; modulo (reszta z dzielenia)
a = b ** c; podniesienie do potęgi (b do potęgi c)
++a; inkrementacja (zwiększenie o 1) w tej samej linii kodu
a++; inkrementacja (zwiększenie o 1) w następnej linii kodu
--a; dekrementacja (zmniejszenie o 1) w tej samej linii kodu
a--; dekrementacja (zmniejszenie o 1) w następnej linii kodu

Tak jak w matematyce, możemy w JS używać nawiasów, aby zmodyfikować kolejność wykonywanych działań:

console.log( 2 + (3 * 2) ); // 8
console.log( (2 + 3) * 2 ); // 10
Przykłady
let margin = 0;

// zwiększamy wartość zmiennej o 1
margin++;
console.log('margin after ++ is:', margin); // margin after ++ is: 1

// zwiększamy wartość zmiennej o 1 w wyrażeniu za pomocą końcówki ++
console.log('margin with ++ suffix is:', margin++); // margin with ++ suffix is: 1
// wartość najpierw została odczytana (1), a dopiero potem zwiększona (teraz wynosi 2)
console.log('margin after ++ is:', margin); // margin after ++ is: 2

// zmniejszamy wartość o 1
margin--;
console.log('margin after -- is:', margin); // margin after -- is: 1

// zwiększamy wartość zmiennej o 1 w wyrażeniu za pomocą przedrostka ++
console.log('margin with ++ prefix is:', ++margin); // margin with ++ prefix is: 2
// wartość nie zmienia się po powyższej linii
console.log('margin after ++ is:', margin); // margin after ++ is: 2

Operatory przypisania

Operator Przykład Równoznaczne z
= a = b a = b
+= a += b a = a + b
-= a -= b a = a - b
*= a *= b a = a * b
/= a /= b a = a / b
%= a %= b a = a % b
Przykłady
let margin = 3;

// dodajemy liczbę do zmiennej
margin += 7;
// taki zapis jest równoznaczny z:
// margin = margin + 7;
console.log('margin after += 7 is:', margin); // margin after += 7 is: 10

// teksty możemy łączyć również za pomocą operatora +=
margin += 'px';
console.log('margin after += px is:', margin); // margin after += px is: 10px

Operatory porównania

Operator Opis
== równa wartość
=== równa wartość i typ danych
!= różne wartości
!== różne wartości i typy danych
> większe niż
< mniejsze niż
>= większe lub równe
<= mniejsze lub równe

Operatory logiczne

Operator Opis
&& i (and)
|| lub (or)
^ jeden z, ale nie oba naraz (xor)
! negacja (not)
Więcej informacji o negacjach

Zobaczmy działanie negacji w praktyce:

let size = 1;

// porównujemy za pomocą PODWÓJNEGO znaku równości
if(size == 1){
  console.log('size is 1');
}

// sprawdzamy czy wartości są różne od siebie
if(size != 7){
  console.log('size is NOT 7');
}

// negujemy warunek za pomocą wykrzyknika
if(!(size == 7)){
  console.log('NOT true, that size is 7');
}

Jak widzisz, wykrzyknij ! oznacza negację. W przypadku porównywania dwóch wartości będziemy używać !=, ale negacja przyda nam się też w innych przypadkach:

let gameStarted = true;
let gameEnded = false;

if(gameStarted){
  console.log('gameStarted is true');
}

if(!gameEnded){
  console.log('NOT true, that gameEnded is true');
}

Z powyższego przykładu dowiadujemy się, że w JS istnieją wartości true i false. Kiedy używamy ich jako warunku, nie musimy pisać gameStarted == true.

Operator warunkowy

Znany również jako operator trójczłonowy (conditional/ternary operator), potocznie nazywany często "krótkim ifem" (short if), służy zwykle do przypisywania zmiennej/stałej wartości zależnej od jakiegoś warunku.

Składnia

condition ? valueIfTrue : valueIfFalse
Więcej informacji

W standardowym zastosowaniu bloku if moglibyśmy zapisać:

const points = 7;
let result;

if(points > 5){
  result = 'win';
} else {
  result = 'loose';
}

console.log(result);

Short if pozwoli nam znacznie skrócić ten fragment kodu:

const points = 7;
const result = points > 5 ? 'win' : 'loose';
console.log(result);

Dodatkowo, powyższy przykład pokazuje, że operator warunkowy pozwala na użycie warunku do przypisania wartości stałej const. Byłoby to niemożliwe przy zastosowaniu if...else.

Działania matematyczne

JavaScript udostępnia obiekt Math(), dzięki któremu z łatwością możemy przeprowadzać bardziej złożone operacje matematyczne.

Funkcja Opis
Math.round(a) zaokrąglenie standardowe – mniejsze od 0.5 w dół, a 0.5 i większe w górę
Math.ceil(a) zaokrąglenie w górę
Math.floor(a) zaokrąglenie w dół
Math.pow(a,b); potęgowanie – a do potęgi b
Math.sqrt(a); pierwiastek kwadratowy z a
Math.min(a, b, c); najmniejsza z podanych wartości
Math.max(a, b, c); największa z podanych wartości
Math.random(); losowa liczba z przedziału od 0 do 1 (bez 1, czyli od 0 do 0.999...)

Powyższe działania można łączyć ze sobą, np. aby uzyskać losową liczbę całkowitą z przedziału od 1 do 10:

const randomNumber = Math.floor(Math.random() * 10) + 1;